﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DataManager.DAL;

namespace DataManager
{
    public class MoviesMsSqlDAO : MoviesDAO
    {
        private MsSqlUtils utils;

        public MoviesMsSqlDAO(MsSqlUtils utils)
        {
            this.utils = utils;
        }

        public DataSet getMovieIDList()
        {
            string sqlCommand = "SELECT FilmId FROM Filmek";
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieData(int id)
        {
            string sqlCommand = "SELECT * FROM Filmek WHERE FilmId = " + id;
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieDB(int id)
        {
            string sqlCommand = "SELECT MennyRakt FROM Filmek WHERE FilmId = " + id;
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieListOnTitle(string title)
        {
            string sqlCommand =
                "SELECT FilmId, EredetiCim, MagyarCim, MegjEv, Ar, MennyRakt " +
                "FROM Filmek " +
                "WHERE EredetiCim LIKE '%" + title + "%' " +
                "OR MagyarCim LIKE '%" + title + "%'";
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieListOnYear(int year)
        {
            string sqlCommand =
                "SELECT FilmId, EredetiCim, MagyarCim, MegjEv, Ar, MennyRakt " +
                "FROM Filmek " +
                "WHERE MegjEv = " + year;
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieListOnActor(string actor)
        {
            string sqlCommand =
                "SELECT Filmek.FilmId, EredetiCim, MagyarCim, MegjEv, Ar, MennyRakt " +
                "FROM Filmek, Jatsza, Szineszek " +
                "WHERE Filmek.FilmId = Jatsza.FilmId " +
                "AND Jatsza.SzineszId = Szineszek.SzineszId " +
                "AND Szineszek.SzineszNev LIKE '%" + actor + "%'";
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public DataSet getMovieListOnDirector(string director)
        {
            string sqlCommand = 
                "SELECT DISTINCT Filmek.FilmId, EredetiCim, MagyarCim, MegjEv, Ar, MennyRakt " +
                "FROM Filmek, Rendezte, Rendezok " +
                "WHERE Filmek.FilmId = Rendezte.FilmId " +
                "AND Rendezte.RendezoId = Rendezok.RendezoId " +
                "AND Rendezok.RendezoNev LIKE '%" + director + "%'";
            return utils.FillDataSetFromQuery(sqlCommand);
        }

        public int getQuantity(int movieId)
        {
            string sqlCommand = "SELECT MennyRakt FROM Filmek WHERE FilmId = " + movieId;
            return (int)utils.FillDataSetFromQuery(sqlCommand).Tables[0].Rows[0][0];
        }

        public void subtractMovie(int id, int nr)
        {
            int darab = getQuantity(id) - nr;
            string sqlCommand = "UPDATE Filmek SET MennyRakt = " + darab + " WHERE FilmId = " + id;
            utils.ExecuteCommand(sqlCommand);
        }

    }
}
